package demo

import (
	"jlpay-sdk-go/pkg/jlpay/core"
	"jlpay-sdk-go/pkg/jlpay/utils"
)

// ==================== 公共配置常量 ====================

// SM2密钥常量 - 十六进制格式（适配当前实现）
const (
	// 私钥
	SM2PrivateKeyHex = "1ea3a9e3bd52303b109a5d86d84ae964f2c3d97eeb6cca9ae8fd4ef59aa585ef"
	// 公钥
	SM2PublicKeyHex = "2498459a378c469f46c12871b56ba7bfa5a7cbffe60e0da9727bb49650d0bc8628e4edd1f9a977f4d7a4722674048ad3db563f409ad7809228c81afa4939a5ea"
	// 嘉联支付平台公钥
	JlpayPubKeyHex = "a677556c07d00c3dc6f3965dbfb1336817c80a5610064b172f14c888a0a777a1393c0f27af779e3ae035abd32ddcc0b4506a5d1ade8af970053205cbc891827f"
)

// 应用配置常量
const (
	AppID     = "1vzougr30f9vcw"                // 应用ID
	BaseURL   = "https://openapi-uat.jlpay.com" // API基础URL
	CryptoAlg = "SM2WithSM4"                    // 加密算法
)

// ==================== 配置创建函数 ====================

// CreateDemoConfig 创建demo配置对象
// 使用Builder模式创建Config对象，包含所有demo需要的配置
func CreateDemoConfig() *core.Config {
	config := core.NewConfig().
		WithAppID(AppID).
		WithBaseURL(BaseURL).
		WithPrivateKey(SM2PrivateKeyHex).   // 使用十六进制格式的私钥
		WithJlpayPublicKey(JlpayPubKeyHex). // 使用十六进制格式的公钥
		WithAutoEncrypt(true).              // 启用自动加密功能
		WithCryptoAlg(CryptoAlg).           // 使用SM2+SM4算法
		WithAutoDecrypt(true).              // 启用自动解密功能
		Build()

	utils.Info("配置初始化完成，已启用自动加密和解密功能")
	return config
}
